java.lang.StringBuffer
、java.lang.StringBuilder
是一个字符串缓存区
工作原理:预先在内存中申请一块空间,以容纳字符序列,如果预留的空间不够用,则进行自动扩容,以容纳更多字符序列
和
String
最大的区别String
是不可变的字符序列,存储在字符串常量池中StringBuffer
和StringBuilder
底层是一个char
数组,但是该数组是可变的,并且可以自动扩容
StringBuffer
和StringBuilder
的默认初始化容量是 16如何优化
StringBuffer
和StringBuilder
呢?- 最好在创建前,预测存储字符数量,然后在创建的时候采用指定初始化容量的方式。为了减少底层数组的拷贝,提高效率。
StringBuffer
和StringBuilder
的区别- 前者是线程安全的(可以在多线程的环境下使用,不会出现问题)
- 后者是非线程安全的(在多线程环境下使用可能出现问题)
- 执行速度方面的比较:StringBuilder > StringBuffer > String
1 | public class StringTest02 { |